/**
 * @author:'莫若省'
 * 对elementMessage组件二次封装
 * 对配置项统一使用减少非必要配置
 */
import { ElMessage } from 'element-plus';
import type { MessageOptionsInterface } from './interface/index';
export const useMessage = (messageOption: MessageOptionsInterface) => {
  const {
    type,
    message,
    icon,
    center,
    showClose,
    grouping,
    dangerouslyUseHTMLString,
    customClass,
    duration,
    onClose,
    offset,
    appendTo,
    repeatNum,
  } = messageOption;
  ElMessage({
    // 消息类型
    type,
    // 消息文字
    message,
    // 自定义图标
    icon: icon || '',
    // 文字是否居中
    center: center || false,
    // 是否显示关闭按钮
    showClose: showClose || true,
    // 合并内容相同的消息，不支持 VNode 类型的消息
    grouping: grouping || true,
    // 是否将 message 属性作为 HTML 片段处理
    dangerouslyUseHTMLString: dangerouslyUseHTMLString || false,
    // 自定义类名
    customClass: customClass || '',
    // 显示时间，单位为毫秒
    duration: duration || 3000,
    // 关闭时的回调函数, 参数为被关闭的 message 实例
    onClose: onClose || undefined,
    // Message 距离窗口顶部的偏移量
    offset: offset || 16,
    // 设置 message 的根元素，默认为 document.body
    appendTo: appendTo || '',
    // 重复次数，类似于 Badge 。当和 grouping 属性一起使用时作为初始数量使用
    repeatNum: repeatNum || 1,
  });
};
